Various embodiments are generally directed to software development in computers, and more specifically, to a technology for layered software development and implementation using files.
Runtime versions of large software applications, such as business software suites, are often compiled into a large piece of binary code. This large piece of binary code is, by design, difficult to modify so that the runtime version of the business software suite is more secure and harder to tamper with.
During development, however, large software applications, such as business software suites, are often divided up into well known programming structures called classes, each of which performs a specific category of functions. For example, in a business software suite, there are software functions for performing inventory, costing, accounting, invoicing, and etc. A single one of these functions, such as invoicing, can be represented as a class comprised of one or more methods that are used to perform the invoicing function assigned to the class.
Subdivision of a large software application into classes and methods is often used to speed the development process. Use of classes allows a large software application to be segmented into smaller parts of code, which can be independently developed and validated in isolation from the remainder of the application.
Subdivision of a large software application into classes and methods also aids in the customization process. For instance, in the example of a business software suite, a standard software application is developed and shipped. However, because the various end users of the business software suite have differing needs, the functions of the standard business software suite are often tailored for the use of the particular end user. This tailoring is simplified through the use of classes, because it is limited to altering code of a method or methods in one or more classes, rather than customizing the underlying code of the entire business software suite.
Presently such classes and methods are stored within a database that forms part of the business software suite. Accessing and altering the content of these classes and methods thus requires the use of database tools. Additionally, such databases are often configured in a proprietary format, and thus, the data representing the classes and methods can only be accessed and altered with specialized database tools. Performing a modification, either during development or for end user customization, requires accessing the data of a class within the database. One or more methods in the class are then modified. The modified class data is then saved in the database, in place of the old class data. The business software suite is then recompiled into a runtime version.
A large application, such as a business software suite, may have millions of lines of underlying code. Thus, recompiling all of the code into a runtime version can take hours. This is tedious and slows the development and modification process. Further, a database is cumbersome and requires the use of specialized database editing tools and methods. A database also affords little or no visibility of class metadata, such as: when changes were made, why changes were made, or who made changes. Thus, version control is hard to implement or non-existent when class data is stored in a database. Additionally, there is no granularity in a database, only a giant file for storing all of the classes. This means that altering a single class alters the entire database file.
While subdividing functions of a large program into classes is useful for simplifying development and modification, it is apparent that the above described methods can be cumbersome, frustrating, and inefficient.